package modelosDeParcial;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class Almacen {
	private Map<String, List<Producto>> productos;

	public Almacen() {
		this.productos = new HashMap<String, List<Producto>>();
	}

	/* post: Incorpora el producto en la seccion indicada. */
	public void agregar(Producto producto, String nombre) {
		if(this.productos.containsKey(nombre)){
			List<Producto> productoAgregar = this.productos.get(nombre);
			productoAgregar.add(producto);
			this.productos.put(nombre, productoAgregar);
		}else{
			List<Producto> nuevoProductoAgregar = new LinkedList<Producto>();
			nuevoProductoAgregar.add(producto);
			this.productos.put(nombre, nuevoProductoAgregar);
		}
	}

	/* post: Devuelve todas las secciones de Almacen. */
	public Set<String> getSecciones() {
		return this.productos.keySet();
	}

	/* post: Devuelve todos los productos. */
	public List<Producto> getProductos() {
		List<Producto> todosLosProductos = new LinkedList<Producto>();
		Set<String> secciones = getSecciones();
		Iterator<String> itSecciones = secciones.iterator();
		while(itSecciones.hasNext()){
			todosLosProductos.addAll(getProductosEnSeccion(itSecciones.next()));
		}
		return todosLosProductos;
	}

	/*
	 * post: Devuelve todos los productos que se encuentran en la seccion
	 * indicada.
	 */
	public Collection<Producto> getProductosEnSeccion(String seccion) {
		Collection<Producto> coleccionDeProductos = new LinkedList<Producto>();
		coleccionDeProductos.addAll(this.productos.get(seccion));
		return coleccionDeProductos;
	}

}
